Computing resource providers leverage large-scale networks of servers and storage devices to enable their customers to execute a variety of applications and web services. This remote, distributed computing model allows the customers to efficiently and adaptively satisfy their computing needs without having to host and maintain the computing infrastructure themselves. However, with the growing use of virtual resources, customers encounter situations, such as unanticipated load and traffic spikes, to which a fixed set of virtual resources have difficulty accommodating. Moreover, automatic load balancing and resource scaling technology to this point has been limited to a small number of resource service types.
On the other hand, customers of a computing resource service provider also often utilize monitoring services to measure performance of resources and diagnose issues with resources. For instance, through these monitoring services, customers can obtain data about resource usage and use this data to make decisions on how to adjust allocations of the resources. However, such decisions are manual processes that are inadequate to react to rapid changes in load and network traffic.